#include "server_Hpp.hpp"

#include <sys/unistd.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <netinet/tcp.h>
#include <netinet/in.h>

#include <CoreGraphics/CoreGraphics.h>

// using namespace std;

void trawPic()
{
    // 1. 获取当前控件的图形上下文
    // CG:表示这个类在CoreGraphics框架里  Ref:引用
    CGContextRef context = UIGraphicsGetCurrentContext();
    // 2. 描述绘画内容
    //    a. 创建图形路径
    CGMutablePathRef path = CGPathCreateMutable();
    //    b. 创建图形起始点
    CGPathMoveToPoint(path, NULL, 50, 50);
    //    c. 添加图形的终点
    CGPathAddLineToPoint(path, NULL, 200, 50);
    // 3. 把绘画内容添加到图形上下文
    CGContextAddPath(context, path);
    // 4. 设置图形上下文的状态（线宽、颜色等）
    CGContextSetLineWidth(context, 5);
    CGContextSetRGBStrokeColor(context, 0, 1, 0, 1);
    // 5. 渲染图形上下文
    CGContextStrokePath(context);
}

void server()
{
    int socketFd = socket(AF_INET, SOCK_STREAM, 0);

    struct sockaddr_in serverAddress; //服务端地址
    serverAddress.sin_family = AF_INET;
    serverAddress.sin_addr.s_addr = 0x00000000;
    serverAddress.sin_port = 0x10FF;

    bind(socketFd, (struct sockaddr *)&serverAddress, sizeof(serverAddress));

    listen(socketFd, 6);

    struct sockaddr_in clientAddress; //客户端地址
    socklen_t len = sizeof(clientAddress);
    int connection = accept(socketFd, (struct sockaddr *)&clientAddress, &len);

    while (true)
    {

        //执行到这,说明已经建立链接了,可以读取数据了
        const int size = 400;
        char data[size];
        size_t n = recv(connection, data, size, 0);

        printf("recv:len-(%d)\n", (int)n);
    }
}

int main(int argc, char **argv)
{
    server();
    return 0;
}

/*
    每隔像素四子节
    包含 Red Green Blue A(透明)
    10*10的画面有100个像素,有四百字节
    所以只要发四百字节客户端就能收到画面
*/
